home *** CD-ROM | disk | FTP | other *** search
- #import "Controleur.h"
- #import "InfoView.h"
-
- @implementation Controleur
- //
- // Récupération des valeurs dans les différentes zones de texte,
- // puis appel de la méthode dessine dans l’objet graphe
- //
- - calculer:sender
- {
- int i;
- if (sender != self ) // Si le sender est le bouton OK
- {
- couleur =[[zoneCouleur target] indexOfItem:[zoneCouleur title]];
- pas = [zonePas floatValueAt:0];
- nbrSouris = [zoneNbrSouris intValueAt:0];
- profondeur = [zoneNbrIter intValueAt:0];
- for (i=0;i<nbrSouris;i++)
- {
- x[i] = [[matrice cellAt:(i*2):0] floatValue];
- y[i] = [[matrice cellAt:(i*2+1):0] floatValue];
- }
- }
- else [fenetre makeKeyAndOrderFront:self];
- [graphe dessine:nbrSouris:profondeur:couleur:pas:x:y];
-
- return self;
- }
-
- - charger:sender
- //
- // Récupération des valeurs initiales ainsi que des paramètres dans un fichier
- // Attention : cette méthode est appellée soit par le menu "Open", soit par la méthode
- // "app:openFile:type" (cas où l’application est lancée par un double click sur un fichier
- // ".mice"
- //
- {
- id panneau,cellule,leMenu,laMatrice;
- char *ext[2] = {"mice"};
- char titre[100];
- int i;
- FILE *fich;
- float r1,v1,b1,r2,v2,b2,rf,vf,bf;
-
- if (sender != self) // si le sender est le menu "Open"
- {
- panneau = [OpenPanel new];
- [panneau setTitle:"Open"];
- // Ouverture de l’OpenPanel en modal
- if ([panneau runModalForTypes:ext])
- strcpy(nomdefichier , [panneau filename]); // Récupération du fichier sélectionné
- else return self;
- }
-
- fich = fopen(nomdefichier,"r"); // Ouverture du fichier
- for (i=0;i<6;i++) // Lecture de l’entête
- fscanf(fich,"%s",titre);
- fscanf(fich,"%f%d%d"
- ,&pas
- ,&nbrSouris
- ,&profondeur); // Lecture des paramètres
- if ((strcmp(titre,"V2.0")==0)||(strcmp(titre,"V1.3")==0))
- {
- fscanf(fich,"%d",&couleur);
- if (titre[1] == '2')
- {
- fscanf(fich,"%f%f%f%f%f%f%f%f%f\n"
- ,&r1,&v1,&b1,&r2,&v2,&b2,&rf,&vf,&bf);
- [couleur1 setColor:NXConvertRGBToColor(r1,v1,b1)];
- [couleur2 setColor:NXConvertRGBToColor(r2,v2,b2)];
- [couleurFond setColor:NXConvertRGBToColor(rf,vf,bf)];
- }
- }
- else couleur = 0;
- leMenu = [zoneCouleur target];
- laMatrice = [leMenu itemList];
- [laMatrice selectCellWithTag:couleur];
- [zoneCouleur setTitle:[[laMatrice selectedCell] title]];
-
- for (i=0;i<nbrSouris;i++) // Lecture des positions initiales
- fscanf(fich,"%f%f ",&x[i],&y[i]);
- fclose(fich); // Fermeture du fichier
-
- // Modification du titre de la fenêtre
- strcpy(titre,"Of Mice And Men : ");
- strcat(titre,strrchr(nomdefichier,'/')+1);
- [fenetre setTitle:titre];
-
- // Transfert des paramètres vers l’interface graphique
- [zonePas setFloatValue:pas at:0]; // Affectation au champ de texte
- // Récupération de la valeur par le target (ici, un slider)
- [[zonePas target] takeFloatValueFrom:zonePas];
-
- [zoneNbrSouris setIntValue:nbrSouris at:0];
- [[zoneNbrSouris target] takeFloatValueFrom:zoneNbrSouris];
-
- [zoneNbrIter setIntValue:profondeur at:0];
- [[zoneNbrIter target] takeFloatValueFrom:zoneNbrIter];
-
- for (i=0;i<nbrSouris;i++)
- {
- cellule = [matrice cellAt:(i*2):0];
- [cellule setFloatValue:x[i]];
- [[cellule target] takeFloatValueFrom:cellule];
- cellule = [matrice cellAt:(i*2+1):0];
- [cellule setFloatValue:y[i]];
- [[cellule target] takeFloatValueFrom:cellule];
- }
-
- [self calculer:self];
-
- [posPanel orderFront:self];
- [paramPanel orderFront:self];
- [fenetre makeKeyAndOrderFront:self]; // Fait apparaître la fenêtre
-
- return self;
- }
- //
- // Ecriture dans un fichier ASCII des données initiales et paramètres de l’image affichée
- //
- - sauver:sender
- {
- id panneau;
- int i;
- FILE *fich;
- float r1,v1,b1,r2,v2,b2,rf,vf,bf;
-
- // Ouverture du SavePanel
- panneau = [SavePanel new];
- [panneau setRequiredFileType:"mice"]; // Spécifie l’extension des fichiers
- [panneau setTitle:"Save"];
- if ([panneau runModal])
- {
- fich = fopen([panneau filename],"w"); // Ouverture du fichier
- fprintf(fich,"Of Mice And Men - V2.0\n"); // Version du logiciel
- fprintf(fich,"%f %d %d %d\n" // Ecriture des paramètres
- ,pas
- , nbrSouris
- ,profondeur
- ,couleur);
- NXConvertColorToRGB([couleur1 color],&r1,&v1,&b1);
- NXConvertColorToRGB([couleur2 color],&r2,&v2,&b2);
- NXConvertColorToRGB([couleurFond color],&rf,&vf,&bf);
-
- fprintf(fich,"%f %f %f %f %f %f %f %f %f\n",r1,v1,b1,r2,v2,b2,rf,vf,bf);
- for (i=0;i<nbrSouris;i++)
- fprintf(fich,"%f %f \n",x[i],y[i]); // Ecriture des valeurs initiales
- fclose(fich); // Fermeture du fichier
- };
- return self;
- }
-
- - nouveau : sender
- {
- int i;
- id cellule;
-
- strcpy(nomdefichier,"Untitled.mice");
- [fenetre setTitle:nomdefichier];
- [zonePas setFloatValue:0.99 at:0];
- [[zonePas target] takeFloatValueFrom:zonePas];
- [zoneNbrSouris setIntValue:4 at:0];
- [[zoneNbrSouris target] takeFloatValueFrom:zoneNbrSouris];
- [zoneNbrIter setIntValue:100 at:0];
- [[zoneNbrIter target] takeFloatValueFrom:zoneNbrIter];
-
- for (i=0;i<10;i++)
- {
- cellule = [matrice cellAt:(i*2):0];
- [cellule setFloatValue:0.0];
- [[cellule target] takeFloatValueFrom:cellule];
- cellule = [matrice cellAt:(i*2+1):0];
- [cellule setFloatValue:0.0];
- [[cellule target] takeFloatValueFrom:cellule];
- }
- [self appDidInit:self];
- [graphe efface:self];
- [posPanel orderFront:self];
- [paramPanel orderFront:self];
- [fenetre makeKeyAndOrderFront:self];
- return self;
- }
-
- - showInfo:sender
- {
-
- if (infoView == nil)
- {
- if ([NXApp loadNibSection: "info.nib" owner: self] == nil)
- {
- return nil;
- }
- }
- [[infoView window] makeKeyAndOrderFront: nil];
- [infoView animateInfo:self];
- return self;
-
- }
-
- - (BOOL)appAcceptsAnotherFile:sender
- {
- return YES;
- }
-
- //
- // Message reçu par le delegate de l’application pour qu’il ouvre le fichier de nom filename
- // et de type aType
- //
- - (int)app:sender openFile:(const char *)filename type:(const char *)aType
- {
- char titre[100];
-
- strcpy(nomdefichier , filename);
- strcpy(titre,"Of Mice And Men :");
- strcat(titre,strrchr(filename,'/')+1); // Recherche le nom du fichier dans le path et l’ajoute au titre
- [fenetre setTitle:titre];
- if ([self charger:self])
- initialise = YES;
- return 1;
- }
-
- //
- // Message reçu par le delegate de l’application au démarrage de celle-ci
- //
- - appDidInit:sender;
- {
- if (!initialise)
- {
- [couleurFond setColor:NX_COLORBLACK];
- [couleur1 setColor:NX_COLORCLEAR];
- [couleur2 setColor:NX_COLORWHITE];
- }
- [fenetre setMiniwindowIcon:"image2"];
- return self;
- }
- @end
-